Entity Framework-এ Code First অ্যাপ্রোচ ব্যবহার করলে, প্রথমে আপনাকে Entity Class তৈরি করতে হয়, যা আপনার ডেটাবেসের টেবিলগুলির প্রতিনিধিত্ব করবে। এরপর, এই Entity Class-এর সাথে সম্পর্কযুক্ত DbContext ক্লাস তৈরি করতে হয়, যা ডেটাবেসের সাথে যোগাযোগ এবং CRUD (Create, Read, Update, Delete) অপারেশন পরিচালনা করবে।
এখানে Entity Class এবং DbContext তৈরির প্রক্রিয়া বিস্তারিতভাবে আলোচনা করা হলো।
Entity Class হলো একটি C# ক্লাস যা ডেটাবেস টেবিলের একটি একক এন্টিটি বা রেকর্ডের প্রতিনিধিত্ব করে। এর মধ্যে প্রপার্টি গুলি ডেটাবেসের টেবিলের কলামের মতো কাজ করে।
ধরা যাক, আমরা একটি "Student" নামক Entity Class তৈরি করতে যাচ্ছি, যেখানে ছাত্রের Id
, Name
এবং Age
থাকবে। Entity Classটি দেখতে এরকম হবে:
public class Student
{
public int Id { get; set; } // Primary Key
public string Name { get; set; }
public int Age { get; set; }
}
এখানে:
Id
প্রপার্টিটি ডেটাবেসের প্রাইমারি কী (Primary Key) হিসেবে কাজ করবে।Name
এবং Age
প্রপার্টি দুটি টেবিলের কলাম হিসেবে কাজ করবে।এটি Entity Framework এর জন্য একটি Entity Class, যা ডেটাবেসের একটি টেবিলের প্রতিনিধিত্ব করে।
এছাড়া, আপনি Data Annotations ব্যবহার করে Entity Class-এ কিছু কনফিগারেশনও দিতে পারেন, যেমন:
public class Student
{
[Key]
public int Id { get; set; }
[Required]
[StringLength(100)]
public string Name { get; set; }
[Range(5, 100)]
public int Age { get; set; }
}
এখানে:
[Key]
: Id
প্রপার্টি কে প্রাইমারি কী হিসেবে চিহ্নিত করছে।[Required]
: Name
প্রপার্টি এখন বাধ্যতামূলক হয়ে গেছে।[StringLength(100)]
: Name
এর সর্বোচ্চ দৈর্ঘ্য 100 অক্ষর হবে।[Range(5, 100)]
: Age
প্রপার্টি ৫ থেকে ১০০ এর মধ্যে থাকতে হবে।এভাবে, Data Annotations দিয়ে Entity Class এর মধ্যে কনফিগারেশন করা হয়।
DbContext হলো Entity Framework-এর প্রধান ক্লাস যা ডেটাবেসের সাথে যোগাযোগ করে এবং Entity ক্লাসগুলোর প্রতিনিধিত্বকারী DbSet প্রপার্টি ধারণ করে। DbContext-ই ডেটাবেস অপারেশনগুলিকে পরিচালনা করে।
DbContext তৈরি করতে হলে, আপনাকে একটি ক্লাস তৈরি করতে হবে যা DbContext ক্লাস থেকে উত্তরাধিকারী (inherit) হবে এবং সেই ক্লাসে DbSet প্রপার্টি ডিফাইন করতে হবে। প্রতিটি DbSet একটি Entity Class এর প্রতিনিধিত্ব করে এবং এটি ডেটাবেসের একটি টেবিলের মতো কাজ করে।
public class SchoolContext : DbContext
{
public DbSet<Student> Students { get; set; }
}
এখানে:
SchoolContext
একটি DbContext ক্লাস যা ডেটাবেসের সাথে যোগাযোগ করে।DbSet<Student>
প্রপার্টি একটি টেবিল হিসেবে Student
Entity Class-এর প্রতিনিধিত্ব করবে।DbContext-এ আপনি OnConfiguring
মেথডও ওভাররাইড করে ডেটাবেসের কানেকশন স্ট্রিং কনফিগার করতে পারেন। উদাহরণস্বরূপ:
public class SchoolContext : DbContext
{
public DbSet<Student> Students { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("your_connection_string_here");
}
}
এখানে UseSqlServer
মেথডের মাধ্যমে আমরা SQL Server ডেটাবেসের কানেকশন স্ট্রিং উল্লেখ করছি। আপনি এখানে অন্য ডেটাবেস (যেমন SQLite, PostgreSQL ইত্যাদি) ব্যবহার করার জন্য উপযুক্ত মেথড ব্যবহার করতে পারেন।
DbContext ব্যবহার করে আমরা ডেটাবেসে CRUD অপারেশন করতে পারি। নিচে একটি সাধারণ উদাহরণ দেয়া হলো, যেখানে আমরা Student
Entity ক্লাস ব্যবহার করে ডেটাবেসে একটি নতুন Student
যুক্ত করব এবং তা রিড (read) করব।
using (var context = new SchoolContext())
{
var student = new Student
{
Name = "John Doe",
Age = 21
};
context.Students.Add(student);
context.SaveChanges(); // ডেটাবেসে পরিবর্তন সংরক্ষণ
}
এখানে:
Add()
মেথড ব্যবহার করে আমরা নতুন Student
যুক্ত করছি।SaveChanges()
মেথড ব্যবহার করে ডেটাবেসে পরিবর্তন সংরক্ষণ করা হচ্ছে।using (var context = new SchoolContext())
{
var student = context.Students.FirstOrDefault(s => s.Name == "John Doe");
Console.WriteLine($"Name: {student.Name}, Age: {student.Age}");
}
এখানে:
FirstOrDefault()
মেথড ব্যবহার করে আমরা Name
দ্বারা Student
খুঁজে পাচ্ছি।DbSet
প্রপার্টি হিসেবে সংরক্ষিত থাকে এবং আপনি এই প্রপার্টি ব্যবহার করে CRUD অপারেশন পরিচালনা করতে পারেন।এভাবে Entity Class এবং DbContext ব্যবহার করে আপনি Entity Framework Code First অ্যাপ্রোচে ডেটাবেস ম্যানেজমেন্ট করতে পারেন।
common.read_more